gesturelongpress: Add getter/setter for delay-factor
authorTimm Bäder <mail@baedert.org>
Wed, 7 Aug 2019 12:09:33 +0000 (14:09 +0200)
committerTimm Bäder <mail@baedert.org>
Wed, 7 Aug 2019 12:11:00 +0000 (14:11 +0200)
docs/reference/gtk/gtk4-sections.txt
gtk/gtkgesturelongpress.c
gtk/gtkgesturelongpress.h

index a20c4d302e3952b4bb98b45d8bbf4260f46dd350..1159248bff7989a31450f38baaa20de62c48e231 100644 (file)
@@ -6737,6 +6737,8 @@ gtk_gesture_drag_get_type
 <TITLE>GtkGestureLongPress</TITLE>
 GtkGestureLongPress
 gtk_gesture_long_press_new
+gtk_gesture_long_press_set_delay_factor
+gtk_gesture_long_press_get_delay_factor
 
 <SUBSECTION Standard>
 GTK_TYPE_GESTURE_LONG_PRESS
index 6b5632d15f0b05a41c23603ca6205f63ed440873..fc28c32f578a6262ff121f14ce917b6d691a66ad 100644 (file)
@@ -227,14 +227,10 @@ gtk_gesture_long_press_get_property (GObject    *object,
                                      GValue     *value,
                                      GParamSpec *pspec)
 {
-  GtkGestureLongPressPrivate *priv;
-
-  priv = gtk_gesture_long_press_get_instance_private (GTK_GESTURE_LONG_PRESS (object));
-
   switch (property_id)
     {
     case PROP_DELAY_FACTOR:
-      g_value_set_double (value, priv->delay_factor);
+      g_value_set_double (value, gtk_gesture_long_press_get_delay_factor (GTK_GESTURE_LONG_PRESS (object)));
       break;
 
     default:
@@ -249,14 +245,11 @@ gtk_gesture_long_press_set_property (GObject      *object,
                                      const GValue *value,
                                      GParamSpec   *pspec)
 {
-  GtkGestureLongPressPrivate *priv;
-
-  priv = gtk_gesture_long_press_get_instance_private (GTK_GESTURE_LONG_PRESS (object));
-
   switch (property_id)
     {
     case PROP_DELAY_FACTOR:
-      priv->delay_factor = g_value_get_double (value);
+      gtk_gesture_long_press_set_delay_factor (GTK_GESTURE_LONG_PRESS (object),
+                                               g_value_get_double (value));
       break;
 
     default:
@@ -288,7 +281,7 @@ gtk_gesture_long_press_class_init (GtkGestureLongPressClass *klass)
                                                         P_("Delay factor"),
                                                         P_("Factor by which to modify the default timeout"),
                                                         0.5, 2.0, 1.0,
-                                                        G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+                                                        G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY));
 
   /**
    * GtkGestureLongPress::pressed:
@@ -339,3 +332,43 @@ gtk_gesture_long_press_new (void)
   return g_object_new (GTK_TYPE_GESTURE_LONG_PRESS,
                        NULL);
 }
+
+/**
+ * gtk_gesture_long_press_set_property:
+ * @gesture: A #GtkGestureLongPress
+ * @delay_factor: The delay factor to apply
+ *
+ * Applies the given delay factor. The default long press time will be
+ * multiplied by this value.
+ * Valid values are in the range [0.5..2.0].
+ */
+void
+gtk_gesture_long_press_set_delay_factor (GtkGestureLongPress *gesture,
+                                         double               delay_factor)
+{
+  GtkGestureLongPressPrivate *priv = gtk_gesture_long_press_get_instance_private (gesture);
+
+  g_return_if_fail (GTK_IS_GESTURE_LONG_PRESS (gesture));
+  g_return_if_fail (delay_factor >= 0.5);
+  g_return_if_fail (delay_factor <= 2.0);
+
+  priv->delay_factor = delay_factor;
+
+  g_object_notify (G_OBJECT (gesture), "delay-factor");
+}
+
+/**
+ * gtk_gesture_long_press_get_property:
+ * @gesture: A #GtkGestureLongPress
+ *
+ * Returns the delay factor as set by gtk_gesture_long_press_set_delay_factor().
+ */
+double
+gtk_gesture_long_press_get_delay_factor (GtkGestureLongPress *gesture)
+{
+  GtkGestureLongPressPrivate *priv = gtk_gesture_long_press_get_instance_private (gesture);
+
+  g_return_val_if_fail (GTK_IS_GESTURE_LONG_PRESS (gesture), 0);
+
+  return priv->delay_factor;
+}
index f42d78a01028ce5116abcfc1d29088961b41ee26..da983355cdda7584bcf78dc297173b3394d2ef9d 100644 (file)
@@ -44,6 +44,15 @@ GType        gtk_gesture_long_press_get_type   (void) G_GNUC_CONST;
 GDK_AVAILABLE_IN_ALL
 GtkGesture * gtk_gesture_long_press_new        (void);
 
+GDK_AVAILABLE_IN_ALL
+void         gtk_gesture_long_press_set_delay_factor (GtkGestureLongPress *gesture,
+                                                      double               delay_factor);
+
+GDK_AVAILABLE_IN_ALL
+double       gtk_gesture_long_press_get_delay_factor (GtkGestureLongPress *gesture);
+
+
+
 G_END_DECLS
 
 #endif /* __GTK_GESTURE_LONG_PRESS_H__ */